<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<body>
<div class="pull-left">
    <div class="form-group form-inline">
        总共 ${pageBean.totalPage} 页，共 ${pageBean.totalCount} 条数据。
    </div>
</div>

<div class="box-tools pull-right">
    <ul class="pagination" style="margin: 0px;">

        <li>
            <a href="javascript:goPage(1)" aria-label="Previous">首页</a>
        </li>

        <li>
            <a href="javascript:goPage(${pageBean.page-1})">上一页</a>
        </li>

        <c:set var="totalPages" value="${pageBean.totalPage}"/>
        <c:set var="currentPage" value="${pageBean.page}"/>

        <c:set var="startPage" value="1"/>
        <c:set var="endPage" value="${totalPages}"/>

        <c:choose>
            <c:when test="${totalPages <= 5}">
                <!-- 如果总页数小于等于5，显示所有页码 -->
                <c:set var="startPage" value="1"/>
                <c:set var="endPage" value="${totalPages}"/>
            </c:when>
            <c:otherwise>
                <!-- 如果总页数大于5，动态计算显示的页码范围 -->
                <c:choose>
                    <c:when test="${currentPage <= 3}">
                        <!-- 当前页小于等于3，显示前5页 -->
                        <c:set var="startPage" value="1"/>
                        <c:set var="endPage" value="5"/>
                    </c:when>
                    <c:when test="${currentPage > totalPages - 3}">
                        <!-- 当前页大于总页数-3，显示最后5页 -->
                        <c:set var="startPage" value="${totalPages - 4}"/>
                        <c:set var="endPage" value="${totalPages}"/>
                    </c:when>
                    <c:otherwise>
                        <!-- 其他情况，当前页居中显示 -->
                        <c:set var="startPage" value="${currentPage - 2}"/>
                        <c:set var="endPage" value="${currentPage + 2}"/>
                    </c:otherwise>
                </c:choose>
            </c:otherwise>
        </c:choose>

        <c:forEach begin="${startPage}" end="${endPage}" var="i">
            <li class="paginate_button ${currentPage == i ? 'active':''}">
                <a href="javascript:goPage(${i})">${i}</a>
            </li>
        </c:forEach>


        <li>
            <a href="javascript:goPage(${pageBean.page+1})">下一页</a>
        </li>

        <li>
            <a href="javascript:goPage(${pageBean.totalPage})" aria-label="Next">尾页</a>
        </li>

    </ul>
</div>


<form id="pageForm" action="${param.pageUrl}" method="post">
    <%--当前页号--%>
    <input type="hidden" name="page" id="page" value="">
    <%--搜索关键字--%>
    <input type="hidden" name="name" id="name" value="">
</form>

<script>
    function goPage(page) {
        // 当前页号
        document.getElementById("page").value = page;

        // 得到搜索关键字
        if (document.getElementById("search-form-name") != null) {
            document.getElementById("name").value = document.getElementById("search-form-name").value;
        }

        // 获取最大页数和最小页数
        var maxPage = parseInt(${pageBean.totalPage}); // 假设页面中有 maxPage 输入框
        var minPage = 1; // 最小页数通常是 1

        // 检查页数是否在有效范围内
        if (page >= minPage && page <= maxPage) {
            // 页数有效，提交表单
            document.getElementById("pageForm").submit();
        }
    }
</script>
</body>
</html>
